from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time


class Atstudy_Record:

    def __init__(self):
        # 谷歌浏览器的安装路径：/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
        # 设置Chrome浏览器选项
        self.chrome_options = webdriver.ChromeOptions()
        # 这里的端口号可能需要根据实际情况进行修改
        self.chrome_options.debugger_address = "localhost:9222"
        self.a = ChromeDriverManager().install()
        print(f"google_driver自动适配下载保存地址：{self.a}")
        # 自动适配google浏览器的驱动，不需要本地下载和配置环境变量了
        # 启动Chrome浏览器，完成复用，复用的参数写进去了 options=chrome_options
        self.driver = webdriver.Chrome(executable_path=self.a, options=self.chrome_options)
        self.driver.implicitly_wait(10)


if __name__ == '__main__':
    # 执行步骤，非常重要
    # 1. 手动在终端执行： open -search_text "Google Chrome" --args --remote-debugging-port=9222
    # 2. 在打开的浏览器上将博为峰网站打开，并且点击到播放的界面，录制软件调试好并且打开
    # 3. 自动化程序只做一件事情：检测页面进度完成，并且出现播放下一级字样，进行下一集的点击操作
    # ——————————————————————————————————————————————————————————————————————————————————
    driver = Atstudy_Record()
    # 循环运行不结束
    while True:
        try:
            # “已结束”的 xpath 元素定位表达式
            elm_yijieshu = '//*[contains(text(),"已结束")]'
            # 检测"已结束"字样
            driver.driver.find_element_by_xpath(elm_yijieshu)
            print("已播放完成")
        except Exception:
            print("未查找到“已结束”")
        try:
            # 检测是否出现播放下一集字样
            elm_xiayigerenwu = '//*[contains(text(),"下一任务")]'
            # 进行点击
            driver.driver.find_element_by_xpath(elm_xiayigerenwu).click()
            print("已完成跳转下一集操作")
        except Exception:
            print("未查找到“下一任务”")
        try:
            # 点击播放
            elm_bofang = '//*[@class="vjs-button-icon"]'
            driver.driver.find_element_by_xpath(elm_bofang).click()
            print("已完成播放操作")
        except Exception:
            print("未查找到“播放”")
            # 未检测到对应元素后，设置一个间隔时间重复检测，设置 10 s 吧
            time.sleep(30)
        # 完成后继续循环直到手动结束

